//TODO los turnos que ya fueron asignados a planillas no deberian aparecer.
qx.Class.define("caraffa.forms.CompletarTurnos",
{
	extend : qx.ui.form.ow.FormTab,
	construct : function ()
	{
		this.base(arguments, "completar_turnos", "Completar Datos");
		
		var model = new qx.ui.table.model.Simple();
		model.setColumns(["cod_turno", "os_table", "E", "DNI", "Paciente", "Obra Social", "Prestacion", "Importe", "Fecha", "Cod. Hab.", "Clinica"]);
		model.setColumnEditable(8, true);
		model.setColumnEditable(9, true);
		this._grdCompletar = new qx.ui.table.Table(model);
		this._grdCompletar.setColumnWidth(0, 50);
		this._grdCompletar.setColumnWidth(1, 50);
		this._grdCompletar.setColumnWidth(2, 30);
		this._grdCompletar.setColumnWidth(3, 80);
		this._grdCompletar.setColumnWidth(4, 130);
		this._grdCompletar.setColumnWidth(5, 160);
		this._grdCompletar.setColumnWidth(6, 200);
		this._grdCompletar.setColumnWidth(7, 70);
		this._grdCompletar.setColumnWidth(8, 80);
		this._grdCompletar.setColumnWidth(9, 80);
		this._grdCompletar.setColumnWidth(10, 100);
		this._grdCompletar.setWidth(950);
		this._grdCompletar.setHeight(440);
//		this._grdCompletar.setColumnVisibilityButtonVisible(false);
		this._grdCompletar.setShowCellFocusIndicator(true);
//		this._grdCompletar.setStatusBarVisible(false);
		this._grdCompletar.getTableColumnModel().setColumnVisible(0, false);
		this._grdCompletar.getTableColumnModel().setColumnVisible(1, false);
		
		this._grdCompletar.getTableColumnModel().setDataCellRenderer(2, new qx.ui.table.cellrenderer.Image(19, 16));

		var rndImporte = new qx.ui.table.cellrenderer.Number("right");
		var frmImporte = new qx.util.format.NumberFormat();
			frmImporte.setPrefix("$");
			frmImporte.setMaximumFractionDigits(2);
			frmImporte.setMinimumFractionDigits(2);
			rndImporte.setNumberFormat(frmImporte);
		
		var rndDNI = new qx.ui.table.cellrenderer.Number("right");
		var frmDNI = new qx.util.format.NumberFormat();
			rndDNI.setNumberFormat(frmDNI);
			
		
		this._grdCompletar.getTableColumnModel().setDataCellRenderer(3, rndDNI);
		this._grdCompletar.getTableColumnModel().setDataCellRenderer(7, rndImporte);
		
		this._txtDesde = new qx.ui.form.ow.DateText("Desde:");
//			this._txtDesde.getDateText().getChildControl("textfield").setValue("");
			this._txtDesde.getLabel().setWidth(45);
			this._txtDesde.getDateText().setWidth(90);
		this._txtHasta = new qx.ui.form.ow.DateText("Hasta:");
//			this._txtHasta.getDateText().getChildControl("textfield").setValue("");
			this._txtHasta.getLabel().setWidth(45);
			this._txtHasta.getDateText().setWidth(90);
				
		this._cmbPlanes = new qx.ui.form.ow.ComboFilter("Planes:", [{value:"", label:"TODOS"}]);
			this._cmbPlanes.getLabel().setWidth(45);
//			this._cmbPlanes.getCombo().setWidth(120);
		
		this._cmbFiltraMedico = new qx.ui.form.ow.ComboBox("Medico:", [{value:"", label:"TODOS"}]);
			this._cmbFiltraMedico.getLabel().setWidth(50);
			this._cmbFiltraMedico.getCombo().setWidth(120);
		
		this._cmbEstado = new qx.ui.form.ow.ComboBox("Estado:", [{value:"", label:"TODOS"}, {value:"A", label:"Atendidos"}, {value:"E", label:"CheckIn"}]);
			this._cmbEstado.getLabel().setWidth(50);
			this._cmbEstado.getCombo().setWidth(90);

//		this._btnGuardar = new qx.ui.form.Button("Guardar Cambios");
		this._cmbClinica = new qx.ui.form.ow.ComboBox("Clinica:", [{value:"", label:"TODAS"}, {value:"1", label:"ZIPOLI"}, {value:"2", label:"AVELLANEDA"}]);
		this._cmbClinica.getLabel().setWidth(50);
		this._cmbClinica.getCombo().setWidth(100);
			
		this._btnCambiarEstado = new qx.ui.form.Button("Cambiar Estado");
		
		this._attachEvents();
		
		this._initForm();
		
		this._getRenglones();
		
		this.add(this._txtDesde, {left:10, top:10});
		this.add(this._txtHasta, {left:150, top:10});
		this.add(this._cmbPlanes, {left:300, top:10});
//		this.add(this._cmbFiltraMedico, {left:470, top:10});
		this.add(this._cmbEstado, {left:550, top:10});
		this.add(this._cmbClinica, {left:700, top:10});
		this.add(this._btnCambiarEstado, {left:860, top:10});
//		this.add(this._btnGuardar, {left:900, top:10});
		this.add(this._grdCompletar, {left:10, top:40});
	},
	members :
	{
		_attachEvents : function ()
		{
			this._txtDesde.getDateText().addListener("changeValue", this._getRenglones, this);
			this._txtHasta.getDateText().addListener("changeValue", this._getRenglones, this);
			this._cmbPlanes.addListener("changeValue", this._getRenglones, this);
			this._cmbFiltraMedico.addListener("changeValue", this._getRenglones, this);
			this._cmbClinica.addListener("changeValue", this._getRenglones, this);
			this._cmbEstado.addListener("changeValue", this._getRenglones, this);
			
//			this._btnGuardar.addListener("execute", function ()
//			{
//				var leng = this._grdCompletar.getTableModel().getRowCount();
//				var cambios = new Array();
//				for (var i=0;i<leng;i++)
//				{
//					var turno = new Object();
//					
//					if (this._grdCompletar.getTableModel().getValue(8,i) != "")
//					{
//						turno.cod_turno = this._grdCompletar.getTableModel().getValue(0,i);
//						turno.codigo = this._grdCompletar.getTableModel().getValue(8,i);
//						cambios.push(turno);
//					}
//				}
//				
//				var rpc = new qx.io.remote.Rpc().set({timeout:10000, url:"services/", serviceName:"CompletarDatosOS"});
//				try
//				{
//					this._grdCompletar.cancelEditing();
//					var params = new Object();
//					params.regs = cambios;
//					var result = rpc.callSync("guardarDatos", params);
//					this._getRenglones();
////					alert(qx.util.Json.stringify(result, true));
//				}
//				catch (ex)
//				{
//					alert(ex)
//				}
//			
//			}, this);
			
			this._btnCambiarEstado.addListener("execute", function ()
			{
				if (this._grdCompletar.getSelectionModel().getSelectedCount())
				{
					var rpc = new qx.io.remote.Rpc();
					rpc.setTimeout(10000);
					rpc.setUrl("services/");
					rpc.setServiceName("CompletarDatosOS");
					try
					{
						var params = new Object();
						params.cod_turno = this._grdCompletar.getTableModel().getValue(0, this._grdCompletar.getFocusedRow()); 
//						params.os_table = this._grdCompletar.getTableModel().getValue(1, this._grdCompletar.getFocusedRow());
						if (this._grdCompletar.getTableModel().getValue(2, this._grdCompletar.getFocusedRow()) == 'caraffa/espera.png')
						{
							params.estado = 'A';
							var imagen = "caraffa/atendido.png";
						}
						else
						{
							params.estado = 'E';
							var imagen = "caraffa/espera.png";
						}
						var result = rpc.callSync("cambiarEstado", params);
						this._grdCompletar.getTableModel().setValue(2, this._grdCompletar.getFocusedRow(), imagen);
					}
					catch (ex)
					{
						alert(ex);
					}
				}
				else
				{
					alert("Debe seleccionar el Turno que desea cambiar el Estado!");
				}
			}, this);
			
			this._grdCompletar.addListener("cellDblclick", function (e)
			{
				if ((e.getColumn() != "8") && (e.getColumn() != "9"))
				{
					if ((this._grdCompletar.getTableModel().getValue(2, this._grdCompletar.getFocusedRow()) != 'caraffa/atendido.png') && (this._grdCompletar.getTableModel().getValue(2, this._grdCompletar.getFocusedRow()) != 'caraffa/candadoCerrado.png') && (this._grdCompletar.getTableModel().getValue(2, this._grdCompletar.getFocusedRow()) != 'caraffa/cruz.png'))
					{
						if (this._grdCompletar.getTableModel().getValue(2, this._grdCompletar.getFocusedRow()))
						{
							var formaPago = new caraffa.widgets.ABMFormaPago(this._grdCompletar.getTableModel().getValue(0, this._grdCompletar.getFocusedRow()));
							formaPago.addListener("resize", formaPago.center, formaPago);
							formaPago.addListener("close", this._getRenglones, this);
							formaPago = null;
						}
					}
					else
					{
						switch (this._grdCompletar.getTableModel().getValue(2, this._grdCompletar.getFocusedRow()))
						{
							case 'caraffa/atendido.png':
							{
								alert("No puede modificar los datos porque ya fue Atendido el Paciente!");
								break;
							}
							case 'caraffa/candadoCerrado.png':
							{
								alert("No puede modificar los datos porque fue Bloqueado el turno!");
								break;
							}
							case 'caraffa/cruz.png':
							{
								alert("No puede modificar los datos porque fue Cancelado el turno!");
								break;
							}
						}
					}
				}
			}, this);
			
			this._grdCompletar.addListener("dataEdited", function (e)
			{
				//ADD osocial && this._grdCompletar
//				if ((e.getData().col == 9) && (this._grdCompletar.getTableModel().getValue(1, e.getData().row) != 'os_family') && (this._grdCompletar.getTableModel().getValue(1, e.getData().row) != 'os_parque_salud') && (this._grdCompletar.getTableModel().getValue(1, e.getData().row) != 'os_apross') && (this._grdCompletar.getTableModel().getValue(1, e.getData().row) != 'os_surbac') && (this._grdCompletar.getTableModel().getValue(1, e.getData().row) != 'os_osplyf') && (this._grdCompletar.getTableModel().getValue(1, e.getData().row) != 'os_osfatlyf') && (this._grdCompletar.getTableModel().getValue(1, e.getData().row) != 'os_iter') && (this._grdCompletar.getTableModel().getValue(1, e.getData().row) != 'os_alumbrar') && (this._grdCompletar.getTableModel().getValue(1, e.getData().row) != 'os_ob_bsa_aclinor') && (this._grdCompletar.getTableModel().getValue(1, e.getData().row) != 'os_iose'))
//				{
//					this._grdCompletar.getTableModel().setValue(9, e.getData().row, e.getData().oldValue);
//					return true;
//				}
//				else
//				{
					if (e.getData().value != e.getData().oldValue)
					{ 
						var params = new Object();
						params.cod_turno = this._grdCompletar.getTableModel().getValue(0, e.getData().row);
						if (e.getData().col == 9)
						{
//							params.os_table = this._grdCompletar.getTableModel().getValue(1, e.getData().row);
							params.cod_habilitacion = this._grdCompletar.getTableModel().getValue(9, e.getData().row);
							var method = "cambiarCodigo";
						}
						else
						{
							var fecha = e.getData().value.substr(8,2) + '/' + e.getData().value.substr(5,2) + '/' + e.getData().value.substr(0,4);
							if (caraffa.Funciones.ValidarFecha(fecha))
							{
								params.fecha = this._grdCompletar.getTableModel().getValue(8, e.getData().row);
								var method = "cambiarFecha";
							}
							else
							{
								this._grdCompletar.getTableModel().setValue(8, e.getData().row, e.getData().oldValue);
								return true;
							}
						}
						var rpc = new qx.io.remote.Rpc();
						rpc.setTimeout(10000);
						rpc.setUrl("services/");
						rpc.setServiceName("CompletarDatosOS");
						try {
							var result = rpc.callSync(method, params);
						} catch (ex) {
							alert(ex);
						}
					}
//				}
			}, this);
		},
		_initForm : function ()
		{
			var rpc = new qx.io.remote.Rpc();
			rpc.setTimeout(10000);
			rpc.setUrl("services/");
			rpc.setServiceName("CompletarDatosOS");
			try
			{
				var result = rpc.callSync("getInitWG");
				
				for (var i = 0; i < result.planes.length; i++)
				{
					this._cmbPlanes.addValue(result.planes[i]);
				}
				
				for (var i = 0; i < result.medicos.length; i++)
				{
					this._cmbFiltraMedico.addValue(result.medicos[i]);
				}
			}
			catch (ex)
			{
				alert(ex);
			}
		},
		_getRenglones : function ()
		{
			var rpc = new qx.io.remote.Rpc();
			rpc.setTimeout(10000);
			rpc.setUrl("services/");
			rpc.setServiceName("CompletarDatosOS");
			
			var params = new Object();
			params.desde = this._txtDesde.getValueToSQL();
			params.hasta = this._txtHasta.getValueToSQL();
			params.plan = this._cmbPlanes.getValue();
			params.medico = this._cmbFiltraMedico.getValue();
			params.estado = this._cmbEstado.getValue();
			params.cod_clinica = this._cmbClinica.getValue();
			
			try
			{
				var result = rpc.callSync("getRenglones", params);
				this._grdCompletar.resetSelection();
				this._grdCompletar.resetCellFocus();
				this._grdCompletar.getTableModel().setData(result);
			}
			catch (ex)
			{
				alert(ex);
			}
		}
	}
});